 package cn.edu.ujn.service.impl;

import java.io.UnsupportedEncodingException;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import cn.edu.ujn.dao.User;
import cn.edu.ujn.dao.UserMapper;
import cn.edu.ujn.service.IUserService;
import cn.edu.ujn.utils.MD5Encoder;
import cn.edu.ujn.utils.Page;
@Service
public class UserServiceImpl implements IUserService {

    @Autowired
    private UserMapper userMapper;
  //按照账号密码进行查询
    @Override
    public User findUser(String usercode, String password) {
        String result=password;
        MD5Encoder pe = new MD5Encoder();
            try {
                 result = pe.geMd5(usercode, password);
            } catch (NoSuchAlgorithmException|UnsupportedEncodingException e) {
                e.printStackTrace();
            } 
    
        return userMapper.findUser(usercode, result);
    }
    @Override
    public Page<User> selectByCondintion(Integer currentPage,Integer pageSize,String keyWord) {
        HashMap map = new HashMap();
        Page<User> page = new Page<User>();
        //搜索参数
        map.put("keyWord", keyWord);
        //计算当前的页面最后的一行的，然后作为查询的开始位置，key必须用start,工具类的导航类已经写名字了，必须对应
        map.put("start", (currentPage-1)*pageSize);
        //设置页面显示多少行，key必须用rows,工具类的导航类已经写名字了，必须对应
        map.put("rows", pageSize);
        //按照给的搜索条件进行查询，返回List客户列表
        List<User> Rows = userMapper.selectUserList(map);
        //计算上面条件进行查询的总行数
        int Total=userMapper.selectUserListCount(keyWord);
        //设置分页
        page.setPage(currentPage);//设置当前页面
        page.setSize(pageSize);//设置页面大小
        page.setRows(Rows);//条件查询的结果返回
        page.setTotal(Total);//总行数
        //返回一个Page对象
        return page;
    }
    //删除用户
    @Override
    public int deleteUser(Integer id) {
        User user=new User();
        user.setUser_state(0);
        user.setUser_id(id);
        return userMapper.updateByPrimaryKeySelective(user);
    }
    //通过id查找用户
    @Override
    public User getUserById(Integer id) {
        return userMapper.selectByPrimaryKey(id);
    }
    //更新用户
    @Override
    public int updateUser(User user,String pwd) {
        if("1".equals(pwd)) {//pwd=1时候，设置新密码
            MD5Encoder pe = new MD5Encoder();
            try {
                String result = pe.geMd5(user.getUser_code(), user.getUser_password());
                user.setUser_password(result);
            } catch (NoSuchAlgorithmException|UnsupportedEncodingException e) {
                e.printStackTrace();
            } 
        }
        return userMapper.updateByPrimaryKeySelective(user);
    }
    //创建用户
    @Override
    public int creatUser(User user) {
        MD5Encoder pe = new MD5Encoder();
        try {
            String result = pe.geMd5(user.getUser_code(), user.getUser_password());
            user.setUser_password(result);
        } catch (NoSuchAlgorithmException|UnsupportedEncodingException e) {
            e.printStackTrace();
        } 
        return userMapper.insert(user);
    }
    @Override
    public User getUserByUserCode(String user_code) {
        return userMapper.selectByUserCode(user_code);
    }
    

}
